package com.beantest.processor;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.Aware;
import org.springframework.beans.factory.config.BeanPostProcessor;

public class BeanProcessor1 implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        if (bean instanceof Aware) { // 检查Aware接口
            System.out.println("检测到Aware接口实现: " + bean.getClass().getName());
        }
        System.out.println("执行before方法");
        return bean;

        /**
         * 调用父类默认的Bean初始化前处理方法
         *
         * 此方法继承自BeanPostProcessor接口，在Bean初始化前阶段执行默认处理逻辑。
         * 典型场景包括：对Bean属性进行预处理或代理包装
         *
         * @param bean 当前正在处理的Bean实例
         * @param beanName 被处理Bean在容器中注册的名称
         * @return 经过处理的Bean对象（可能是原始实例或包装后的代理对象）
         *         注意：若不需要改变Bean引用，应返回传入的原始bean对象
         */
        // return BeanPostProcessor.super.postProcessBeforeInitialization(bean, beanName);

    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("执行after方法");
        return BeanPostProcessor.super.postProcessAfterInitialization(bean, beanName);
    }
}
